home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 13.2 KB | 360 lines | [TEXT/MPS ] |
- (*
- File: Slots.mod
-
- Contains: Slot Manager Interfaces.
-
- Version: Technology: System 7.5
- Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17
-
- Copyright: © 1984-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Bugs?: If you find a problem with this file, use the Apple Bug Reporter
- stack. Include the file and version information (from above)
- in the problem description and send to:
- Internet: apple.bugs.applelink.apple.com
- AppleLink: APPLE.BUGS
-
- *)
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE Slots;
-
- IMPORT SYSTEM, Types, Files;
-
- (* $PUSH*)
- (* $ALIGN MAC68K*)
- (* $LibExport+*)
-
- CONST
- fCardIsChanged* = 1; (*Card is Changed field in StatusFlags field of sInfoArray*)
- fCkForSame* = 0; (*For SearchSRT. Flag to check for SAME sResource in the table. *)
- fCkForNext* = 1; (*For SearchSRT. Flag to check for NEXT sResource in the table. *)
- fWarmStart* = 2; (*If this bit is set then warm start else cold start.*)
- stateNil* = 0; (*State*)
- stateSDMInit* = 1; (*():Slot declaration manager Init*)
- statePRAMInit* = 2; (*():sPRAM record init*)
- statePInit* = 3; (*():Primary init*)
- stateSInit* = 4; (*():Secondary init*)
- (* flags for spParamData *)
- fall* = 0; (* bit 0: set=search enabled/disabled sRsrc's *)
- foneslot* = 1; (* 1: set=search sRsrc's in given slot only *)
- fnext* = 2; (* 2: set=search for next sRsrc *)
-
- TYPE
- (*
- SlotIntServiceProcPtr uses register based parameters on the 68k and cannot
- be written in or called from a high-level language without the help of
- mixed mode or assembly glue.
-
- In*:
- => sqParameter A1.L
- Out*:
- <= return value D0.W
- *)
- SlotIntServiceProcPtr* = Types.Register68kProcPtr; (* register PROCEDURE SlotIntService*(sqParameter: LONGINT): INTEGER; *)
- SlotIntServiceUPP* = Types.UniversalProcPtr;
-
- CONST
- uppSlotIntServiceProcInfo* = $0000B822; (* Register PROCEDURE (4 bytes in A1): 2 bytes in D0; *)
-
- PROCEDURE NewSlotIntServiceProc*(userRoutine: SlotIntServiceProcPtr): SlotIntServiceUPP;
- (*$IF NOT GENERATINGCFM *)
- INLINE PASCAL $2E9F;
- (*$END*)
-
- PROCEDURE CallSlotIntServiceProc*(sqParameter: LONGINT; userRoutine: SlotIntServiceUPP): INTEGER;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL ; (*••*)
- (*To be implemented*: Glue to move parameters into registers.*)
- (*$END*)
-
- TYPE
- SlotIntQElement* = RECORD
- sqLink*: Types.Ptr; (*ptr to next element*)
- sqType*: INTEGER; (*queue type AIFF.ID for validity*)
- sqPrio*: INTEGER; (*priority*)
- sqAddr*: SlotIntServiceUPP; (*interrupt service routine*)
- sqParm*: LONGINT; (*optional A1 parameter*)
- END;
-
- SQElemPtr* = POINTER TO SlotIntQElement;
-
- SpBlock* = RECORD
- spResult*: LONGINT; (*PROCEDURE Result**)
- spsPointer*: Types.Ptr; (*structure pointer*)
- spSize*: LONGINT; (*size of structure*)
- spOffsetData*: LONGINT; (*offset/data field used by sOffsetData*)
- spIOFileName*: Types.Ptr; (*ptr to IOFile name for sDisDrvrName*)
- spsExecPBlk*: Types.Ptr; (*pointer to sExec parameter block.*)
- spParamData*: LONGINT; (*misc parameter data (formerly spStackPtr).*)
- spMisc*: LONGINT; (*misc field for SDM.*)
- spReserved*: LONGINT; (*reserved for future expansion*)
- spIOReserved*: INTEGER; (*Reserved field of Slot Resource Table*)
- spRefNum*: INTEGER; (*RefNum*)
- spCategory*: INTEGER; (*sType: Category*)
- spCType*: INTEGER; (*Type*)
- spDrvrSW*: INTEGER; (*DrvrSW*)
- spDrvrHW*: INTEGER; (*DrvrHW*)
- spTBMask*: Types.SInt8; (*type bit mask bits 0..3 mask words 0..3*)
- spSlot*: Types.SInt8; (*slot number*)
- spID*: Types.SInt8; (*structure AIFF.ID*)
- spExtDev*: Types.SInt8; (*AIFF.ID of the external device*)
- spHwDev*: Types.SInt8; (*Id of the hardware device.*)
- spByteLanes*: Types.SInt8; (*bytelanes from card ROM format block*)
- spFlags*: Types.SInt8; (*standard flags*)
- spKey*: Types.SInt8; (*Internal use only*)
- END;
-
- SpBlockPtr* = POINTER TO SpBlock;
-
- SInfoRecord* = RECORD
- siDirPtr*: Types.Ptr; (*Pointer to directory*)
- siInitStatusA*: INTEGER; (*initialization E*)
- siInitStatusV*: INTEGER; (*status returned by vendor init code*)
- siState*: Types.SInt8; (*initialization state*)
- siCPUByteLanes*: Types.SInt8; (*0=[d0..d7] 1=[d8..d15]*)
- siTopOfROM*: Types.SInt8; (*Top of ROM= $FssFFFFx: x is TopOfROM*)
- siStatusFlags*: Types.SInt8; (*bit 0 - card is changed*)
- siTOConst*: INTEGER; (*Sound.Time Out C for BusErr*)
- siReserved*: ARRAY 2 (*ΔΔ[0..1]ΔΔ*) OF Types.SInt8; (*reserved*)
- siROMAddr*: Types.Ptr; (* addr of top of ROM *)
- siSlot*: Types.SInt8; (* slot number *)
- siPadding*: ARRAY 3 (*ΔΔ[0..2]ΔΔ*) OF Types.SInt8; (* reserved *)
- END;
-
- SInfoRecPtr* = POINTER TO SInfoRecord;
-
- SDMRecord* = RECORD
- sdBEVSave*: Types.ProcPtr; (*Save old BusErr vector*)
- sdBusErrProc*: Types.ProcPtr; (*Go here to determine if it is a BusErr*)
- sdErrorEntry*: Types.ProcPtr; (*Go here if BusErrProc finds real BusErr*)
- sdReserved*: LONGINT; (*Reserved*)
- END;
-
- FHeaderRec* = RECORD
- fhDirOffset*: LONGINT; (*offset to directory*)
- fhLength*: LONGINT; (*length of ROM*)
- fhCRC*: LONGINT; (*CRC*)
- fhROMRev*: Types.SInt8; (*revision of ROM*)
- fhFormat*: Types.SInt8; (*format - 2*)
- fhTstPat*: LONGINT; (*test pattern*)
- fhReserved*: Types.SInt8; (*reserved*)
- fhByteLanes*: Types.SInt8; (*ByteLanes*)
- END;
-
- FHeaderRecPtr* = POINTER TO FHeaderRec;
-
- SEBlock* = (*ΔΔPACKEDΔΔ*) RECORD
- seSlot*: Types.UInt8; (*Slot number.*)
- sesRsrcId*: Types.UInt8; (*sResource Id.*)
- seStatus*: INTEGER; (*Status of code executed by sExec.*)
- seFlags*: Types.UInt8; (*Flags*)
- seFiller0*: Types.UInt8; (*Filler, must be Types.SignedByte to align on odd boundry*)
- seFiller1*: Types.UInt8; (*Filler*)
- seFiller2*: Types.UInt8; (*Filler*)
- seResult*: LONGINT; (*Result of sLoad.*)
- seIOFileName*: LONGINT; (*Pointer to IOFile name.*)
- seDevice*: Types.UInt8; (*Which device to read from.*)
- sePartition*: Types.UInt8; (*The partition.*)
- seOSType*: Types.UInt8; (*Type of OS.*)
- seReserved*: Types.UInt8; (*Reserved field.*)
- seRefNum*: Types.UInt8; (*RefNum of the driver.*)
- seNumDevices*: Types.UInt8; (* Number of devices to load.*)
- seBootState*: Types.UInt8; (*State of StartBoot code.*)
- END;
-
- (* Principle *)
-
- PROCEDURE SReadByte*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7000, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadWord*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7001, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadLong*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7002, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetCString*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7003, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetBlock*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7005, $A06E, $3E80;
- (*$END*)
- PROCEDURE SFindStruct*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7006, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadStruct*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7007, $A06E, $3E80;
- (*$END*)
- (* Special *)
- PROCEDURE SReadInfo*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7010, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadPRAMRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7011, $A06E, $3E80;
- (*$END*)
- PROCEDURE SPutPRAMRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7012, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadFHeader*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7013, $A06E, $3E80;
- (*$END*)
- PROCEDURE SNextSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7014, $A06E, $3E80;
- (*$END*)
- PROCEDURE SNextTypeSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7015, $A06E, $3E80;
- (*$END*)
- PROCEDURE SRsrcInfo*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7016, $A06E, $3E80;
- (*$END*)
- PROCEDURE SCkCardStat*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7018, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadDrvrName*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7019, $A06E, $3E80;
- (*$END*)
- PROCEDURE SFindDevBase*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $701B, $A06E, $3E80;
- (*$END*)
- PROCEDURE SFindBigDevBase*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $701C, $A06E, $3E80;
- (*$END*)
- (* Advanced *)
- PROCEDURE InitSDeclMgr*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7020, $A06E, $3E80;
- (*$END*)
- PROCEDURE SPrimaryInit*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7021, $A06E, $3E80;
- (*$END*)
- PROCEDURE SCardChanged*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7022, $A06E, $3E80;
- (*$END*)
- PROCEDURE SExec*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7023, $A06E, $3E80;
- (*$END*)
- PROCEDURE SOffsetData*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7024, $A06E, $3E80;
- (*$END*)
- PROCEDURE SInitPRAMRecs*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7025, $A06E, $3E80;
- (*$END*)
- PROCEDURE SReadPBSize*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7026, $A06E, $3E80;
- (*$END*)
- PROCEDURE SCalcStep*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7028, $A06E, $3E80;
- (*$END*)
- PROCEDURE SInitSRsrcTable*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7029, $A06E, $3E80;
- (*$END*)
- PROCEDURE SSearchSRT*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702A, $A06E, $3E80;
- (*$END*)
- PROCEDURE SUpdateSRT*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702B, $A06E, $3E80;
- (*$END*)
- PROCEDURE SCalcSPointer*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702C, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetDriver*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702D, $A06E, $3E80;
- (*$END*)
- PROCEDURE SPtrToSlot*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702E, $A06E, $3E80;
- (*$END*)
- PROCEDURE SFindSInfoRecPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $702F, $A06E, $3E80;
- (*$END*)
- PROCEDURE SFindSRsrcPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7030, $A06E, $3E80;
- (*$END*)
- PROCEDURE SDeleteSRTRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7031, $A06E, $3E80;
- (*$END*)
- PROCEDURE OpenSlot*(paramBlock: Files.ParmBlkPtr; async: BOOLEAN): Types.OSErr;
- EXTERNAL PASCAL;
- PROCEDURE OpenSlotSync*(paramBlock: Files.ParmBlkPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A200, $3E80;
- (*$END*)
- PROCEDURE OpenSlotAsync*(paramBlock: Files.ParmBlkPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $A600, $3E80;
- (*$END*)
- (* Device Manager Slot Support *)
- PROCEDURE SIntInstall*(sIntQElemPtr: SQElemPtr; theSlot: INTEGER): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A075, $3E80;
- (*$END*)
- PROCEDURE SIntRemove*(sIntQElemPtr: SQElemPtr; theSlot: INTEGER): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $301F, $205F, $A076, $3E80;
- (*$END*)
- PROCEDURE SVersion*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7008, $A06E, $3E80;
- (*$END*)
- PROCEDURE SetSRsrcState*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $7009, $A06E, $3E80;
- (*$END*)
- PROCEDURE InsertSRTRec*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $700A, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $700B, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetTypeSRsrc*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $700C, $A06E, $3E80;
- (*$END*)
- PROCEDURE SGetSRsrcPtr*(spBlkPtr: SpBlockPtr): Types.OSErr;
- (*$IF NOT GENERATINGCFM*)
- INLINE PASCAL $205F, $701D, $A06E, $3E80;
- (*$END*)
-
- (* $ALIGN RESET*)
- (* $POP*)
-
- END Slots.
-